home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / dos_win / winsock / wsock20 / minutes.txt < prev    next >
Encoding:
Text File  |  1994-12-16  |  45.3 KB  |  1,676 lines

  1. Meeting Minutes, Dec 12 Windows Sockets 2.0 Meeting
  2.  
  3. Following are the minutes from the December 12, 1994 meeting
  4. of the Windows Sockets 2.0 Generic API Extensions and
  5. Operating Framework functionality groups.  These notes are
  6. in fairly raw form, but they should contain all the
  7. important questions and issues raised.  Generally the
  8. company name of a speaker is used, but in some cases, an
  9. individual's first name is used to identify the speaker.
  10. Here is a list of the full names of speakers:
  11.  
  12. davea: Dave Anderson of Intel
  13. charlie: Charlie Tai of Intel
  14. henry: Henry Sanders of Microsoft
  15. keith: Keith More of Microsoft
  16. martin: Martin Hall of JSB
  17. mark: Mark Towfiq of SunSoft
  18. davidtr: David Treadwell of Microsoft
  19. alden: Algen Gannon of Microsoft
  20.  
  21. In some cases the speaker name was lost, either because of
  22. the speed of the conversation or because they did not state
  23. their name/company.  In these cases the speaker is
  24. identified as "?".  Breaks between Q&A sessions (with
  25. presenters talking) are identified by "***".
  26.  
  27. The unresolved issues that came up at the meeting are as
  28. follows:
  29.  
  30. * what to do about differences between error returns between
  31. error codes, eg -1 as int in 16bit and 32bit?
  32.  
  33. *  what will happen with the winsock2 DLL source code?  will
  34. it be made available?  people are concerned about the
  35. dependency created by the architecture.
  36.  
  37. * what sort of debugging support will the winsock2 DLL have?
  38.  
  39. * what is meant by "interrupt context"?  spec needs to
  40. identify this very exactly for win 3.1.
  41.  
  42. * will there be some mechanism for "priming" interrupts to
  43. guarantee mutual exclusion of send and receive calls?
  44.  
  45. * various issues were raised with regard to the proposed
  46. structure for QOS information.
  47.  
  48. * how does QOS relate to RSVP? simple ethernet?
  49.  
  50. * is there a need for a generic, asynchrouous (overlapped)
  51. ioctl/setsockopt function?
  52.  
  53. * in the face of multiple, shared sockets, how does
  54. WSAAsyncSelect() work?  three proposals:
  55.      - totally independent notification on each handle
  56.      - notification is independent for each event
  57.      - only one WSAAsyncSelect outstanding for each handle
  58. (like winsock 1.1)
  59.  
  60. * if an app asks for connect data but the protocol does not
  61. support it, does the request fail or does the connect data
  62. get ignored?  (general concensus was to fail)
  63.  
  64. * is the output flags param of WSARecv used to indicate
  65. MSG_OOB as well as MSG_PARTIAL?
  66.  
  67. * should winsock2 define a generic configuration mechanism?
  68.  
  69. * what will be the process for resolving open issues?
  70.  
  71. * will there be any semantic differences between winsock 1.1
  72. and 2.0? (general concensus: NO)
  73.  
  74. * will there be a new DLL name for winsock2?  or will
  75. "winsock.dll" and "wsock32.dll" export the 2.0 semantics?
  76. (general concensus: no new DLL name)
  77.  
  78. * how does someone choose between multiple instances of the
  79. same type of provider?  for example, two tcpips, one for lan
  80. and one for dialup.  is there a control panel applet or
  81. somesuch that controls this?
  82.  
  83. * how will scatter/gather semantics be supported?
  84.  
  85.  
  86. Start of meeting minutes:
  87.  
  88. novell: is there interest in Windows Sockets on other
  89. platforms?
  90.  
  91. davea: a little.  who wants to step up and do the work?
  92. intel is mainly interested in Windows.
  93.  
  94. ?: the macintosh?
  95.  
  96. davea: same answer.  intel won't be spending a lot of time
  97. on that, but that doesn't stop someone else from doing it.
  98.  
  99. ***
  100.  
  101. novell: are servers at well-known port addresses?
  102.  
  103. davea: that is part of the name resolution group solution,
  104. but it is possible to have dynamic server addresses with
  105. their work.
  106.  
  107. wrq: is someone comes out with a new protocol, does a server
  108. need to know about the protocol?  why?
  109.  
  110. davea: servers know the attributes that they require, they
  111. search for protocols that have those attributes, and
  112. bind/listen on those protocols.  so they do not need to know
  113. about future protocols.
  114.  
  115. novell: can servers bind to dynamic or static addresses?
  116.  
  117. davea: the goal of the name resolution group is to define a
  118. programmatic interface to existing and future name services
  119. that encompases the usual types opf features exported by
  120. name services.  gives example of DNS needing static ports,
  121. bindery/SAP needing dynamic.
  122.  
  123. novell: why not do multiple listens over multiple protocols
  124. on one socket?
  125.  
  126. henry: this would make implementation of multiple providers
  127. very difficult.
  128.  
  129. davea: interesting idea, but it is solved in other ways.
  130.  
  131. ***
  132.  
  133. wrq: what did you do about differences between error returns
  134. between error codes, eg -1 as int in 16bit and 32bit
  135.  
  136. keith: spi doesn't do GetLastError(), passes out params
  137.  
  138. wrq: 16bit returns 64k, 32bit returns 4gig
  139.  
  140. henry: that is really an api issue
  141.  
  142. novell: whether handle is real handle is job of svc
  143. provider?
  144.  
  145. keith: yes, if implemented as real file system, file handles
  146. drop out.  if not file system, upcalls generate socket
  147. handles uniquely.
  148.  
  149. ibm: routing function in ws2 dll: app says "I want that
  150. stack"  are there circumstances where ws2 dll makes
  151. decision?
  152.  
  153. keith: no, ws2 dll gives you info and app makes decision
  154.  
  155. ibm:
  156.  
  157. davea: triple doesn't necessarily define a provider;
  158. provider ID enables unique determination.  use WSASocket in
  159. conjunction with info from PROTOCOL_INFO
  160.  
  161. ibm: example where providers support multiple transport
  162. protocols, media
  163.  
  164. davea: application has to make the choices, or else ws2
  165. picks the first one that works
  166.  
  167. keith: endpoint is traditionally a triple, but it is really
  168. a quad including provider id
  169.  
  170. novell: triple might be supported by multiple providers on
  171. the same machine
  172.  
  173. henry: might have one ethernet tcpip, one slip, this enables
  174. that situation to work
  175.  
  176. novell: isn't it weird to use triple to distinguish those
  177. characteristics? don't they uniquely determine stack?
  178.  
  179. henry: not necessarily unique
  180.  
  181. davea: in telephony, there may be multiple stacks which
  182. speak the same protocol.  need another tag to identify.
  183.  
  184. wrq: like to see included doc on how inferred priority is
  185. implemented
  186.  
  187. ftp: why there are differences on why there are differences
  188. between 16bit spi and 32bit spi
  189.  
  190. keith: need real file system handles on 32bit
  191.  
  192. ftp: how does app decide whether to use file system calls or
  193. ws2 calls
  194.  
  195. davea: a bit in PROTOCOL_INFO about whether socket handles
  196. are real
  197.  
  198. westwind: nt, sync vs. async socket handles on nt
  199.  
  200. ftp: same blocking mechanism in 16bit and 32bit spis?
  201.  
  202. keith: no, spis differ
  203.  
  204. novell: select() on different socket handles from different
  205. providers?
  206.  
  207. keith: doesn't work, but other mechanisms provide same
  208. functionality, davea will discuss later
  209.  
  210. ***
  211.  
  212. distinct: a way to dynamically load, unload a svc provider?
  213. eg over dialup
  214.  
  215. keith: those decisions up to ws2 dll, svc providers loaded
  216. on demand as apps request them
  217.  
  218. wrq: unloaded on demand?
  219.  
  220. keith: I would imagine, no reason why couldn't
  221.  
  222. netmanage:  why not defer blocking to provider on both 16bit
  223. and 32bit
  224.  
  225. davea: blocking differs between providers, effects apps,
  226. doing it once in ws2 dll makes it consistent across
  227. providers
  228.  
  229. netmanage: multiple ws2 dlls?
  230.  
  231. davea: one ws2 dll.  comes with os instead of coming with
  232. every provider.
  233.  
  234. netmanage:  who writes it?
  235.  
  236. davea: now stack vendors write entire winsock dll.
  237. proposing that os vendor (microsoft) on 32bit write and
  238. freely distribute ws2 dll.  svc providers simply write to
  239. spi.  16bit, is demand, intel would make freely available,
  240. based on work already done.  no proliferation os ws2 dlls so
  241. behavior is standardized, stack vendors don't need to
  242. duplicate effort.
  243.  
  244. ibm: have ms and intel agreed to do this?
  245.  
  246. davea: yes, microsoft and intel have agreed to do it.
  247.  
  248. novell: demands 16bit ws2 dll
  249.  
  250. ftp: who assigns provider Ids
  251.  
  252. davea: jsb willing to provide a clearinghouse of Ids.
  253. ensures it isn't a duplicate of something already defined.
  254.  
  255. novell: clashes with rfcs?
  256.  
  257. davea: well known ports don't go only to ws2 clearinghouse.
  258. iana (or whoever) does that assignment.
  259.  
  260. sunsoft: addr family make up in winsock.
  261.  
  262. sunsoft: why doesn't microsoft supply both 16bit and 32bit?
  263.  
  264. microsoft: we want to focus our efforts on the 32-bit SPI,
  265. plus Intel has done some work with PII that can be leveraged
  266. as a starting point for the 16-bit DLL.
  267.  
  268. novell: we need a 16-bit interface today
  269.  
  270. davea: intel agress to provide it asap
  271.  
  272. ?: who agrees to fix it?  update it?
  273.  
  274. davea: intel isn't that business, but jsb is in that
  275. business.  jsb is willing to work on building it and
  276. providing technical services to support.
  277.  
  278. ftp: middle `95, ws2 dll and source code and build
  279. environment freely available on anon ftp?
  280.  
  281. davea: hesitant on exact timeframe, 2nd half, depending on
  282. ws2 progress, you will have everything you need
  283.  
  284. ftp: providers won't want to depend on other companies to
  285. fix problems; want source code
  286.  
  287. henry: need one common dll, source code results in multiple
  288. ws2 dlls
  289.  
  290. ftp: don't want to have multiple dependencies
  291.  
  292. ?: give out source code on nda?
  293.  
  294. dintinct: defined way to provide updates to providers?
  295.  
  296. novell: fix quickness depends on price paid?
  297.  
  298. ftp: winsock2 dll given out by ftp etc?
  299.  
  300. davea: near term will ship with operating system
  301.  
  302. ftp: not for 16bit
  303.  
  304. davea: valid concerns, need to find a solution that doesn't
  305. result in proliferation of ws2 dlls.  open to suggestions.
  306. hampered by fact that ws2 community is not real legal
  307. entity.
  308.  
  309. ftp: proposes making source code available
  310.  
  311. distinct: difficult because which ws2 dll works, gets
  312. installed
  313.  
  314. novell: but providers need to give fixes to customers
  315.  
  316. henry: can make recent versions of dll available via anon
  317. ftp
  318.  
  319. ?: when provider makes a change, they must give it back to
  320. clearinghouse
  321.  
  322. ftp: wants to hear suggestions, schedule says shipping `95.
  323. need to resolve problems asap.
  324.  
  325. davea: interested in hearing solutions
  326.  
  327. walldata: this puts svc providers in same position as app
  328. providers when you don't have compete control--it works over
  329. some ws dlls, not over others.  cooperation is required,
  330. someone at ws2 level is required to want to fix it.  it can
  331. work, but it requires effort.
  332.  
  333. jsb: ws2 dlls are as thin as possible to minimize problems.
  334. procedents exist on this:  tapi, odbc, video for windows.
  335.  
  336. distinct: is svc providers have different Ids, what about
  337. validation process?
  338.  
  339. davea: wsat will be enhanced
  340.  
  341. walldata:  have a bakeoff!
  342.  
  343. jsb: three staging posts between now and ws2 spec
  344. finalization:
  345.      Q1 95 have consolidated drafts of complete ws2 spec
  346.      SDKs need to be made available
  347.      learn from mistakes in ws 1.1, have bakeoffs to
  348. validate spec and implementations
  349.  
  350. these staging posts are key and occur before ws2 is "done"
  351.  
  352. netmanage: if a problem, have to locate where the problem.
  353. source code would help.
  354.  
  355. walldata: yes, debugging paradigm would help
  356.  
  357. netmanage: app makes blocking call, ws dll issues
  358. nonblocking call to provider?
  359.  
  360. davea: yes in 16bit, but in 32bit provider handles all
  361. blocking
  362.  
  363. sunsoft: problem with core assumption of this.  lots of
  364. mementum in winsock.  concerned that departure from ws1.1
  365. api, how does a svc provider handle the tons of apps that
  366. exist?  thunking to ws2 dll?
  367.  
  368. davea:  good question.  couple of trains of thought.  one
  369. notion is that ws2 dll is both a ws1.1 and ws2 dll.  another
  370. is that 1.1 is as it, and ws2 is different.  not bottommed
  371. out on that yet.  this is a clear issue that must be
  372. resolved.  feels that we would be better served by keeping
  373. dlls separate.
  374.  
  375. cisco: if dlls are separate, then what is motivation for
  376. going to ws2?
  377.  
  378. davea: features, plus ws1.1 is limited to tcpip
  379.  
  380. sunsoft:  will discuss this issue further later
  381.  
  382. ***
  383.  
  384. novell: have to worry about handling recv/send from sombody
  385. else's callback?
  386.  
  387. davea: protocol_info struct indicates whether provider can
  388. handle send/recv at interrupt context.
  389.  
  390. distinct:  so will ws2 dll work with interrupt context?
  391.  
  392. henry: clarification on what is "interrupt context"
  393.  
  394. davea: point is to provide time-sensitive applications a
  395. mechanism to override windows messages
  396.  
  397. distinct:  all svc providers are dlls?
  398.  
  399. keith:  yes, if you have a kernel provider then you supply a
  400. provider dll to interface to the kernel component
  401.  
  402. distinct: then any kernel components are kernel specific?
  403.  
  404. keith: yes
  405.  
  406. novell: difficult to shield yourself from live interrupt
  407. callback considerations
  408.  
  409. wrq: can always fail send or recv
  410.  
  411. novell: need to nail down what is meant by interrupt
  412. context, need to be specific on what is meant by each
  413. context.  if I am going to say that I support it, I want to
  414. know what it means.
  415.  
  416. ***
  417.  
  418. netmanage: for tcpip, you must keep data for retransmissions
  419.  
  420. davea: we suggest that send buffering, even for overlapped
  421. io the send gets bufferred by default.  but an app can turn
  422. off send bufferring, which means that apc/event/callback is
  423. called when data is ack'ed.
  424.  
  425. novell: when you make the final callback, doesn't that mean
  426. that the data has been ack'ed?
  427.  
  428. henry: completion only means that data buffer is freed
  429.  
  430. ftp: send completion in nonbufferring means that remote
  431. transport has it
  432.  
  433. alden: does this force application to stop-and-wait?
  434.  
  435. keith: no, you may put down multiple async send buffers
  436.  
  437. alden: this requires send windowing in app
  438.  
  439. henry: depends on app requirements
  440.  
  441. wrq: a way to prime send completion?  there are instances
  442. where I want only to send out of interrupt context.  a
  443. mechanism to initiate this?
  444.  
  445. henry: why do you need this?
  446.  
  447. wrq: possible to get completion before api call completing,
  448. need notification of completion
  449.  
  450. henry: not necessarily true that interrupt context doesn't
  451. mean that ack hasn't arrived
  452.  
  453. wrq: 8k buffer, 2k write chunks, when you get callback you
  454. might never get back to app
  455.  
  456. henry: missing something, let's discuss later.  callback is
  457. in "some" user context, not kernel
  458.  
  459. ftp: a cancellation mechanism?
  460.  
  461. keith: no, win32 lacks cancellation
  462.  
  463. ftp: then I cannot do a 64k send?  what if it takes too
  464. long?
  465.  
  466. keith: just close socket
  467.  
  468. henry: indeterminate state--how much was sent?
  469.  
  470. ?: session is in indeterminate state when that happens,
  471. might as well close anyway.
  472.  
  473. ***
  474.  
  475. novell: are apcs targeted at a specific thread or process?
  476.  
  477. keith: thread
  478.  
  479. novell: then you could not have just one thread handling
  480. callbacks
  481.  
  482. keith: no, callbacks are thread specific
  483.  
  484. davea: overlapped i/o is NOT optional; every provider must
  485. support it
  486.  
  487. ***
  488.  
  489. novell: can ws2 address issue with 1.1 and fd_close?
  490.  
  491. keith: responsibility of spec clarification comittee
  492.  
  493. novell: needs to be nailed down by somebody
  494.  
  495. ftp (bob): current thinking of clarifications group is to
  496. say that apps must do recv until they get 0 bytes read
  497.  
  498. davea: not addresses in these documents, but it does need to
  499. be addressed
  500.  
  501. distinct:  2.0 a different spec?  does the issue exist in
  502. 2.0?
  503.  
  504. davea:  need for no ambiguity on this issue in 2.0, overlap
  505. between generic api and clarifications groups
  506.  
  507. distinct:  right now, everyone does recv() when you get an
  508. fd_close
  509.  
  510. ***
  511.  
  512. 5 minute break
  513.  
  514. ***
  515.  
  516. cisco: when mapping qos name to qos, have different qos
  517. specs for different types of data eg mpeg?
  518.  
  519. charlie: yes, exactly
  520.  
  521. ***
  522.  
  523. ?: if peak == average, what do you do with burst length?
  524.  
  525. charlie:  burst length indicates time of burst
  526.  
  527. ?: but what about burst length?
  528.  
  529. charlie: it is irrelevant in that case
  530.  
  531. cisco: problem with specifying burst without a time
  532. parameter.  this is a problem for the guy who implements the
  533. service.
  534.  
  535. charlie:  max time for peak is limited by burst length.
  536.  
  537. cisco: fine for atm, but does not work for a standard
  538. interface eg 56k line because you cannot exceed 56k.
  539.  
  540. at&t: maybe definitions of peak and average are at issue--
  541. what do they mean?
  542.  
  543. charlie: average is over lifetime of connection
  544.  
  545. cisco: spoke on this at ietf, what you want is the token
  546. bucket model, use two params instead of three. should use
  547. unit of time and bits/bytes that you want to send in that
  548. period of time.
  549.  
  550. at&t: how does continuous traffic work in that model?
  551.  
  552. charlie:  this is just a proposal, will need to discuss
  553. further
  554.  
  555. novell: how to map for ethernet folks?
  556.  
  557. davea: protocol_info struct tells whether you support qos,
  558. can assert that you cannot deal with it.  also, you can say
  559. that you only support qos and only take "best effort"
  560. requests.
  561.  
  562. cisco: goal to specify api for qos that can be supported
  563. across wide variety of media, wide variety of networks,
  564. including atm, ethernet, token ring etc.  current spec makes
  565. it difficult to implement in ethernet/token ring w/o loss of
  566. value.
  567.  
  568. ibm: disagrees about loss of value, can implement via
  569. translation into token bucket.  maybe enable different
  570. approaches to qos.
  571.  
  572. cisco: token bucket model provides same model for atm, so
  573. atm does not lose but everything else gains?
  574.  
  575. ftp: relationship to rsvp proposal?
  576.  
  577. charlie:  good question.  we are tracking, some people here
  578. can help us understand current status of rsvp to tell us how
  579. to integrate with rsvp.  goal is a single api interface that
  580. can support/accomodate all these.
  581.  
  582. cisco: talked to those people, looking at rsvp, they think
  583. token bucket makes more sense.
  584.  
  585. charlie: let's postpone detailed discussion.
  586.  
  587. davea: as far as I understand, this model is not at variance
  588. with rsvp.
  589.  
  590. henry: issues with using it at connect
  591.  
  592. cisco: yes, a flow can change its characteristics, rsvp
  593. sender can change characteristics when a new sender comes
  594. up: reservation changes.  must be able to support at other
  595. then connect time.
  596.  
  597. ftp: a server has no concept of "connect time"
  598.  
  599. henry:  odd doing it at connect time; unify in one api?
  600.  
  601. davea: issue needs more discussion
  602.  
  603. ***
  604.  
  605. ?: when an app specifies flow, do you get that flow?
  606.  
  607. charlie:  app specifies, provider accepts/rejects
  608.  
  609. at&t: how can cost be a single int32?
  610.  
  611. davea: disagreement over that issue, it is outstanding
  612.  
  613. cisco: thinking about predictive service?
  614.  
  615. charlie: yes, we think about it.  best effort means more
  616. than a hint; it checks feasibility of setting up a
  617. connection.  20mb/sec over ethernet clearly will not work.
  618.  
  619. cisco: best effort != predictive service, don't call it that
  620.  
  621. charlie: yes
  622.  
  623. at&t: ???
  624.  
  625. charlie:???
  626.  
  627. ***
  628.  
  629. cisco: what about iso tp?  thinking about that?
  630.  
  631. henry: no, straight to atm
  632.  
  633. cisco:  what about cell loss
  634.  
  635. charlie: eg video audio don't care about lost packets
  636.  
  637. cisco: want to detect this
  638.  
  639. many: don't care about that
  640.  
  641. cisco: but you could lose a cell in a packet
  642.  
  643. ibm: many don't care about that
  644.  
  645. cisco: many app vendors don't want retransmission, but they
  646. may readjust sending parameters.  so they need a cell loss
  647. detection mechanism.
  648.  
  649. henry: we could easily solve detection of packet/cell loss
  650.  
  651. ***
  652.  
  653. distinct: how does an app get a qos group id?
  654.  
  655. charlie: first connection gets group id.  following conns
  656. pass in same group id.
  657.  
  658. distinct:  not clear on how group priorities works
  659.  
  660. charlie: data on high priority sockets send first
  661.  
  662. distinct:  how to resolve between groups?
  663.  
  664. charlie:  equal footing between different groups
  665.  
  666. distinct:  need to resolve contention across groups
  667.  
  668. ibm: next step: os scheduling issues
  669.  
  670. davea: process priority etc is an os issue, we wanted to
  671. draw a line.  you can reap useful benefits with this.
  672.  
  673. distinct: priority done by ws2 or provider?
  674.  
  675. davea: provider.
  676.  
  677. distinct: raising this because it will cause problems across
  678. providers and groups.
  679.  
  680. intel: svc provider deals with it, socket groups cannot span
  681. providers.
  682.  
  683. davea: os capability issues.  win3.1 does not handle this;
  684. win32 does.
  685.  
  686. distinct: thread priorities across priorities?
  687.  
  688. davea: yes, it is an os issue
  689.  
  690. att: group qos encompases several sockets
  691.  
  692. charlie:  yes
  693.  
  694. ibm: confused about what are groups?  same as programs?
  695.  
  696. intel: establishes priotiry within a group
  697.  
  698. ibm: mpeg defines a program, this sounds like a similiar
  699. concept
  700.  
  701. davea:  many xports under ws2 are connection oritnted.  must
  702. establish conn first, then multiplex several sockets.  svc
  703. provider needs a clue for params of 1st underlying conn.  in
  704. most situations, cannot go after the fact and establish
  705. different qos.
  706.  
  707. at&t: requirement that everything goes in the same group?
  708.  
  709. davea: priority can be a local matter on a host or bilateral
  710. across the conn.  constrained group enables the latter but
  711. does not mandate it.
  712.  
  713. cisco:  if going over wider network (mbone), you tell router
  714. that you want to join multicast feed and receive with best
  715. effort.  you also get qos params of sender.  user looks at
  716. quality, can request more bandwidth.  you don't want to tie
  717. it down, you might want to change it later.  need a
  718. renegotiation capability.
  719.  
  720. sunsoft:  just an ioctl?
  721.  
  722. davea: renegotiating qos is an async function, current ioctl
  723. setting apis are stateless, synchronous
  724.  
  725. henry: there is a mechanism proposed for qos change
  726. notification.  can leverage this to attempt to solve
  727. renegotiation problem.
  728.  
  729. wrq: socket priority goes over only a single provider, yes?
  730. one app can't deal with multiple providers grouped in a
  731. socket group?
  732.  
  733. davea:  yes
  734.  
  735. ***
  736.  
  737. break for lunch
  738.  
  739. ***
  740.  
  741. distinct: when sharing sockets across tasks, how does event
  742. notification work?
  743.  
  744. davea: two proposals: one is event notification is
  745. independent per handle.  example of how that might work.  if
  746. you want two processes to get notifications, they both get
  747. them, but who knows how the app is supposed to handle that;
  748. it is their problem.  other solution: for any particular
  749. network event, only one process registers for the event.
  750. last one to register gets it.  this is listed as an open
  751. issue--feedback?
  752.  
  753. netmanage: when you dupe, do you get the same socket or
  754. another socket?
  755.  
  756. davea: you get another handle into the socket.  underlying
  757. stuff is the same.  it may be a different handle value.
  758.  
  759. netmanage: can't I just use the same socket handle value?
  760.  
  761. davea: socket handles are specific to the process in which
  762. they are allocated.  might get away with this in win16, but
  763. in win32 where socket descriptors are per-process this
  764. doesn't work.
  765.  
  766. netmanage: who handles duplication? ws2 or provider?
  767.  
  768. davea: keith, do they differ?
  769.  
  770. keith: in 32bit if handles are real file system handles,
  771. system handles it.  in 16bit and 32bit with fake socket
  772. handles, ws2 dll does the duplication.
  773.  
  774. davea: in 16bit, ws2 dll handles all of it; generates a new
  775. descriptor, etc.  example of how this works.
  776.  
  777. netmanage: provider doesn't even know that there are
  778. multiple handles for a particular socket?
  779.  
  780. davea: subject to constraint of handling of notification,
  781. maybe.  issue outstanding.
  782.  
  783. digital: have you worked out a way that this socket is
  784. shutdown?
  785.  
  786. davea: refcnts, last one out turns out the lights.
  787.  
  788. digital: when a spawned daemongoes, last one kills it?
  789.  
  790. davea: yes
  791.  
  792. ftp: more questions on how to do notification?
  793.  
  794. henry & davea: outstanding issue; two schools of thought.
  795. describes two schools of thought again.
  796.  
  797. henry: in ws1.1, handle duplication was "optional" as an
  798. extension.  how did people do it?
  799.  
  800. distinct: ws1.1 dll shares memory.
  801.  
  802. henry: how to handle notifications?
  803.  
  804. distinct: notification is dependent (only one; last one gets
  805. it).  proposes making it independent
  806.  
  807. henry:  issue with reenabling--how do you know how to rearm?
  808.  
  809. ftp: can it be done in a way to just pass handle to a child
  810. task?  parent cannot continue to access socket?
  811.  
  812. davea: app can do this, but how do you know that handle
  813. value isn't already allocated in the child task?
  814.  
  815. sunsoft: the proposal is different, they want to have one
  816. process per socket at a time.
  817.  
  818. davea & others: requirement is SHARING, not socket PASSING.
  819. many apps need actual sharing.
  820.  
  821. at&t: do both handles get notification?
  822.  
  823. davea: that is the issue, whether it goes to both handles or
  824. one handle
  825.  
  826. wrq: back to shutdown issue: what about the shutdown() call?
  827.  
  828. davea: shutdown() does an actual shutdown().
  829.  
  830. wrq: is there a notification mechanism?
  831.  
  832. distinct & davea: that is up to the application to handle.
  833. shared sockets create lots of problems.
  834.  
  835. ftp: then why do them?
  836.  
  837. davea: lots of neat wins, e.g. if sending and receiving ends
  838. of sockets are separate processes, sharing sockets enables
  839. it.
  840.  
  841. ...many other suggestions...
  842.  
  843. ftp: the more stuff like this we create, the more support
  844. work is created
  845.  
  846. distinct: servers want this to work
  847.  
  848. henry: on mailing list, people do want SHARED sockets
  849.  
  850. davea: true that support is an issue, but this is a high
  851. demand issue
  852.  
  853. netmanage: how does the duplicate notification work given
  854. provider only knows about one socket?
  855.  
  856. davea:  ws2 dll would be responsible for doing the multiple
  857. notifications and doing it multiple times if necessary
  858.  
  859. netmanage: WSAAsyncSelect has its own window handle
  860.  
  861. davea: spi doesn't necessarily take window handle.
  862. callbacks into ws2 dll handle all notifications.
  863.  
  864. netmanage: so provider handles callbacks and ws2 dll does
  865. notifications?
  866.  
  867. henry: what do you all think about independent
  868. notifications?
  869.  
  870. ?: concerns about complexities with independent
  871. notifications
  872.  
  873. digital: select is done in providers
  874.  
  875. wrq: this imposes lots of complexity given few apps care
  876. about it
  877.  
  878. novell: asyncselect is not passed down?
  879.  
  880. davea: that is true in 16bit spi--the "select" for 16bit spi
  881. is different
  882.  
  883. henry: counterexample: fd_close is a different issue
  884.  
  885. davea: yes people want that
  886.  
  887. henry: but there is an ipc that people need to use, so force
  888. those applications that care about it to handle
  889. crossnotification
  890.  
  891. ibm: don't overengineer, force complex app to deal with it
  892.  
  893. davea: depends on how people want to use it.
  894.  
  895. henry: finding out about close is not difficult if you are
  896. reading/writing.
  897.  
  898. davea: only reason for ipc is if that is the common
  899. mechanism
  900.  
  901. distinct: what about blocking sockets?
  902.  
  903. davea: a socket is either blocking or not
  904.  
  905. distinct: if one thread does send, another does recv, does
  906. second io fail?
  907.  
  908. davea: yes, 2nd one fails
  909.  
  910. dvaea: need to keep requirement, let's discuss later
  911.  
  912. sunsoft: WSAEINPROGRESS on nonblocking sockets?
  913.  
  914. davea: how does it work in nt/win95?
  915.  
  916. davidtr: description of multiple send/recv in nt/win95
  917.  
  918. wrq: but it is an issue in win16
  919.  
  920. henry: you need more reentrancy in order to successfully
  921. implement it in win16
  922.  
  923. netmanage: can sender be blocking and recvr nonblocking?
  924.  
  925. davea: no
  926.  
  927. distinct: that is a good argument for having one
  928. notification
  929.  
  930. sunsoft: agrees
  931.  
  932. henry: agrees
  933.  
  934. ?: if we dupe it and pass it off, do we lose access?
  935.  
  936. davea: two models are independent notification (each process
  937. independently registers interest in multiple events).  other
  938. model is that for a particular network event only one
  939. process can register interest.
  940.  
  941. ?: ??
  942.  
  943. davea: model is like for WSAAsyncSelect; latest requestor of
  944. a particular network event gets it
  945.  
  946. ?: other things are getting duplication, you are about to
  947. transfer, and you die?
  948.  
  949. davea: handles are equivalent, so os should deallocate
  950. resources, sockets are opened
  951.  
  952. ?: when does that socket handle go away?
  953.  
  954. davea: when last reference goes away
  955.  
  956. att: but if the last one has registered notification, what
  957. happens?
  958.  
  959. netmanage: a different api for giving away a socket?
  960.  
  961. davea: problem is that you cannot simple hand a socket to a
  962. different process.
  963.  
  964. netmanage: wants it to be simplier.  all apps she has are
  965. wanting a handoff, not shared sockets.
  966.  
  967. davea: multithreaded server it is not an issue
  968.  
  969. distinct: wsaasyncselect spec needs to change; a 2nd call in
  970. current spec wipes out last asyncselect setting.
  971.  
  972. davea: associated notification mechanism is with HANDLE not
  973. SOCKET
  974.  
  975. jsb: one socket ID for the svc provider.  multiple dupes ref
  976. several handles.  davea proposal is that asyncselect is
  977. specific to each handle, not to each socket.
  978.  
  979. davea: example of how this works.
  980.  
  981. distinct: what about socket options?
  982.  
  983. davea: socket options are part of intrinsic socket?
  984.  
  985. distinct: what if you set a socket to blocking/nonblocking?
  986.  
  987. henry: apps need to coordinate.  the burden should be there.
  988.  
  989. att: which if any behavior is documented?
  990.  
  991. davea: believes that it says notification is independent
  992.  
  993. henry: any good examples of why you need independent
  994. notifications other than fd_close?
  995.  
  996. davea: fd_qos
  997.  
  998. alden: one oob thread
  999.  
  1000. henry: shouldn't be an issue
  1001.  
  1002. davidtr: other notification mechanism: wsaeventselect
  1003.  
  1004. netmanage: do we have an api to read events that have
  1005. occurred on a socket?
  1006.  
  1007. davea: yes, wsaenumnetworkevents
  1008.  
  1009. netmanage: wsaasyncselect query mechanism?  tell what it is
  1010. currently doing?
  1011.  
  1012. davea: no plan to implement that because no perceived need
  1013.  
  1014. keith: if you set it, you should know what it is set to
  1015.  
  1016. ?: shared sockets you can get an error code if you register
  1017. an event that another process has?
  1018.  
  1019. davea: that is one possibility
  1020.  
  1021. netmanage: ?
  1022.  
  1023. davea: processes need to cooperate--that is inherent.  let's
  1024. continue.
  1025.  
  1026. ***
  1027.  
  1028. digital: does 1st accept() complete?  (return)
  1029.  
  1030. davea: yes
  1031.  
  1032. distinct: isn't tcpip supposed to send an ack right away?
  1033.  
  1034. ftp: can hold off on sending your own syn
  1035.  
  1036. novell: why not a wsareject?
  1037.  
  1038. davea: couple of ways to implement it.  when you call
  1039. wasaccept it tells you about someone trying to connect,
  1040. another call to get addr, another to accept; this si 3 apis
  1041. and is complicated
  1042.  
  1043. digital: decnet has sockopts for this
  1044.  
  1045. netmanage:  what happens if you have multiple
  1046. sockets/connections?
  1047.  
  1048. davea: this does not change queuing model.  there is still
  1049. the same queue.  when you get an incoming conn request and
  1050. defer, you have not popped the queue until you accept or
  1051. reject it.  you cannot process other incoming connects until
  1052. you process the 1st one.
  1053.  
  1054. distinct: fd_accept is reenabled on???
  1055.  
  1056. davea: reenabled after you either accept or reject, not
  1057. defer
  1058.  
  1059. sunsoft: is there an exact desc of what is passed to
  1060. condition func based on different protocols?  wants ip addr
  1061.  
  1062. davea: yes you get sockaddr of caller
  1063.  
  1064. ***
  1065.  
  1066. att: ignore connect data as opposed to failing if not
  1067. supported?
  1068.  
  1069. davea: fails with an error.  also in protocol_info struct.
  1070.  
  1071. henry: what about protos with limited sizes of connect data?
  1072.  
  1073. davea: should probably be in protocol_info struct
  1074.  
  1075. att: a single field of maxlen would solve it
  1076.  
  1077. davea:  good idea
  1078.  
  1079. ***
  1080.  
  1081. sunsoft: oob flag must be set if data read is oob?
  1082.  
  1083. davea: not sure.  oob is bad.
  1084.  
  1085. digital: decnet apps use oob.  historical references?
  1086. datagrams?
  1087.  
  1088. davidtr: from xti, designed for reliable protocols
  1089.  
  1090. digital: what is the precenence?
  1091.  
  1092. henry: existing interfaces return error and discard extra
  1093. data.  reliable protocols need the flag.
  1094.  
  1095. novell: there was talk of returning -1*bytes read if partial
  1096. message
  1097.  
  1098. davidtr: description of nt WSARecvEx
  1099.  
  1100. att: so this flag is just like xti recv function?
  1101.  
  1102. davidtr: yes
  1103.  
  1104. ***
  1105.  
  1106. henry: is there a way to resolve open issues?
  1107.  
  1108. davea: easier to resolve issues in person, but we just
  1109. dumped lots of info
  1110.  
  1111. ftp: this doesn't address dns, etc
  1112.  
  1113. davea: this is just generic and operating framework groups
  1114.  
  1115. henry: just presenting those groups, other subgroups do the
  1116. rest, including integration of their proposals.
  1117.  
  1118. davea: so we need to get this on ftp srvs asap so other
  1119. groups can start making proposals
  1120.  
  1121. ftp: do we consider config params involved in spi?
  1122.  
  1123. davea: what kind of config params?
  1124.  
  1125. ftp: dns server, send size, dns timeout.  will we define
  1126. this mechanism?
  1127.  
  1128. davea: nameres group
  1129.  
  1130. ftp: what is the mechanism itself?
  1131.  
  1132. jsb: two components: data transfer, name resolution, as
  1133. separate proposals.  do other group proposals fit well with
  1134. what dave and keith have done?
  1135.  
  1136. ftp: I don't understand who does configuration
  1137.  
  1138. others: what do you mean?
  1139.  
  1140. ftp: dns servers, domain name
  1141.  
  1142. henry: programmatically configurable?
  1143.  
  1144. ftp: does each dev create their own params?
  1145.  
  1146. davea: ws1.1 did no config params
  1147.  
  1148. jsb: people have wanted to programatically set these.  ws2
  1149. does not include these as requirements.
  1150.  
  1151. henry: these issues are specific to various func groups.  no
  1152. generic need for a suite of apis to solve this.
  1153.  
  1154. novell: a svc provider can do this on their own.
  1155.  
  1156. ftp: dns svc should be in a well known place so that when
  1157. you switch providers the new provider can leverage the old
  1158. info
  1159.  
  1160. henry:  no need for a common place
  1161.  
  1162. wrq: management nightmare.  registry has a solution for
  1163. this.
  1164.  
  1165. novell: rules for querying config info?
  1166.  
  1167. henry: hasn't seen provider update be an issue
  1168.  
  1169. ftp: if you want to move a hosts file between systems,
  1170. you're hosed--no consistency.  where to put config params?
  1171.  
  1172. davidtr: not in scope of winsock group
  1173.  
  1174. davea: have func groups make suggestions
  1175.  
  1176. wrq: load order of providers, how to define this?  what if I
  1177. have multiple versions of my provider?
  1178.  
  1179. davea: when you do install, you create protocol_info that
  1180. points to specific dll.
  1181.  
  1182. ftp: this is the start of config info.
  1183.  
  1184. keith: the install apis hide that
  1185.  
  1186. henry: we are defining api + architecture, not config
  1187.  
  1188. sunsoft: do you need to get dns server besides from where
  1189. your system has config'ed it?  programmatically?
  1190.  
  1191. ftp: ws2 provided by intel + ms doesn't take any config
  1192. params?
  1193.  
  1194. henry: install apis do take protocol_info struct.
  1195.  
  1196. jsb: one issue is how much we can hope to achieve.  it would
  1197. be nice to have it consistent, conventions might be nice.
  1198. to keith: does anything return seciton in ini file where svc
  1199. providers put config info?
  1200.  
  1201. keith: no, that info is hidden, opaque.  convention about
  1202. where these things live.
  1203.  
  1204. ftp: so ws2 dll requires no config info?
  1205.  
  1206. keith: no, install apis
  1207.  
  1208. ftp: ws2 dll comes from you, svc provider comes from me,
  1209. does ws2 dll need any config info?
  1210.  
  1211. davea: yes, provider must call install apis.  when someone
  1212. wants you, I call you.
  1213.  
  1214. ftp:  does this mean that future params to ws2 dll are
  1215. passed to install apis?
  1216.  
  1217. davea: no
  1218.  
  1219. henry: if ws2 dll had "max protocols to support" how to
  1220. support?
  1221.  
  1222. davea: those params do not exist and are not being
  1223. considered.  never say never, but they are not foreseen.
  1224.  
  1225. wrq: will install function deal with contention?  2 dlls
  1226. with same name?
  1227.  
  1228. keith: you pass in a unique name to install api
  1229.  
  1230. davea: when you get a triple, we find first provider that
  1231. meets that
  1232.  
  1233. wrq: what is app does enumprotocols?
  1234.  
  1235. davea: he gets them all
  1236.  
  1237. wrq: and if they install two copies of the same stack?
  1238.  
  1239. davidtr: install api takes unique name, fails if exists
  1240.  
  1241. davea: also good to call enumprotocols to be safe
  1242.  
  1243. digital: timeframes?  set deadlines on comments?  voting?
  1244.  
  1245. henry: depends on what people can digest in a period of time
  1246.  
  1247. davea: late jan meeting:  good to have a position on what to
  1248. say to rev board.  by xmas, spec on ftp servers for other
  1249. groups.  not final, but reflect general approach.  give
  1250. feedback if approach is totally wrong so we can make
  1251. changes.  want violent oppisition about missing things now.
  1252. xmas to end jan knocking off details.  what do people feel
  1253. about voting?
  1254.  
  1255. distinct: how to resolve open issues?
  1256.  
  1257. davea: some today.  but there may be reservations about
  1258. solving all issues too soon.
  1259.  
  1260. digital: need timeframe to help people know deadline
  1261.  
  1262. att:  good to start discussing issues to get a feel for what
  1263. people feel
  1264.  
  1265. davea: look at pad, try to come up with reasonable dates.
  1266. may be other open issues that pop up later.
  1267.  
  1268. netmanage: how does ws2 dll discover what events have
  1269. occurred below it?
  1270.  
  1271. davea: 16bit dll provider makes upcall, ws2 dll does
  1272. notification.  32bit world stack does it itself.
  1273.  
  1274. ***
  1275.  
  1276. break, martin talks
  1277.  
  1278. ***
  1279.  
  1280. wrq: in original meeting, did we discuss management apis?
  1281.  
  1282. jsb: winsock is not snmp
  1283.  
  1284. netmanage: room for one more document.  ws2 takes care of
  1285. blocking, asyncselect, many things in ws2 dll.  good if we
  1286. have another doc which defines what the provider supports.
  1287.  
  1288. keith: spi spec documents that.
  1289.  
  1290. netmanage: gethostbyname()
  1291.  
  1292. keith: nameres group issue
  1293.  
  1294. davea: in conversations with nameres group, the getXbyY
  1295. issues are handled by nameres
  1296.  
  1297. davea: for moving a stack to ws2, it should be easy
  1298.  
  1299. wrq: name resolutions unique to xport?  e.g. hp probe which
  1300. is name-->addr addr-->mac resolution issue.
  1301.  
  1302. digital: how does nameres group meet?
  1303.  
  1304. davea: depends on margaret, mark of nameres group
  1305.  
  1306. distinct: who consolidates documents?
  1307.  
  1308. martin: depends on what is most pragmatic?
  1309.  
  1310. davea: two or three documents--nameres, api, spi
  1311.  
  1312. novell: are nameres pieces independept of provider?
  1313.  
  1314. davidtr: yes
  1315.  
  1316. ftp: namespace provider independent of transport provider?
  1317.  
  1318. davea: yes
  1319.  
  1320. ftp: ws2 coming from ms/intel.
  1321.  
  1322. davea: multiple documents
  1323.  
  1324. wrq: means for resolving conflicts
  1325.  
  1326. davea: follow same model, can pick a particular provider if
  1327. you want
  1328.  
  1329. sunsoft: ws2 strawman spec only delineates new apis, ws1.1
  1330. is incorporated by default (yes).  ws1.1 migration: users
  1331. and developers of ws1.1 apps.  question is can we look to a
  1332. way that ws1.1 apps run unchanged on new architecture?  they
  1333. use similiar triple, and this is a very important thing in
  1334. order to preserve momentum.  vendors will be torn between
  1335. support for ws2 and ws1.1?
  1336.  
  1337. davea: problems include single app which uses a middlewear
  1338. dll.  dll uses 1.1, app uses 2.0.
  1339.  
  1340. distinct:  at last meeting, concensus was that a new dll
  1341. name is required.
  1342.  
  1343. henry: it should work, however, if there are no semantic
  1344. differences between 1.1 and 2.0.
  1345.  
  1346. many: issue is whether semantic issues will exist?
  1347.  
  1348. henry: no strong opinion!  two solutions: one is
  1349. winsock.dll, other is a new dll with a new name.
  1350.  
  1351. sunsoft: app vendor does not want to write multiple versions
  1352.  
  1353. henry: some apps will require new features
  1354.  
  1355. sunsoft: propagation issue; ws2 will take a while to get
  1356. there
  1357.  
  1358. keith:  need to mandate that there will be a winsock.dll
  1359. which supports old applications
  1360.  
  1361. ftp: what would be wrong with providing a new ws2 dll called
  1362. winsock.dll, include ws1.1 emulation
  1363.  
  1364. distinct: registration will not work
  1365.  
  1366. henry: we could do that if there are no semantic changes
  1367.  
  1368. distinct: not practical to make runtime decision on whether
  1369. to use 1.1 or 2.0
  1370.  
  1371. davea: mark says app vendor doesn't want to support both ws2
  1372. and 1.1.  if app does not require ws2 capabilities, then the
  1373. app can still be written to 1.1 and ask for 2.0 and continue
  1374. if it does not get it.
  1375.  
  1376. mark: issue is that a winsock.dll must exist
  1377.  
  1378. davea: app can protect itself
  1379.  
  1380. mark: if ws2 dll can handle someone asking for 1.1 then we
  1381. are ok.  this is an important goal.  if we do not do that,
  1382. someone will write a broken dll.
  1383.  
  1384. distinct: problem in current spec says that subsequent
  1385. version requests different version number.
  1386.  
  1387. mark: will break 90% of things if we lack basic agreement
  1388.  
  1389. firefox: mapping layer into ws2 dll called winsock.dll would
  1390. solve the problem.
  1391.  
  1392. mark: this would not have the foresight that we have here
  1393.  
  1394. davidtr: requirement for "winsock.dll", there may be a
  1395. separate winsock dll
  1396.  
  1397. distinct: might not work
  1398.  
  1399. davea: rpc dlls etc. are important
  1400.  
  1401. henry: only the 1st request actually does something
  1402.  
  1403. davea: scary because of ordering concerns
  1404.  
  1405. navy: what is ws2 dll is the shim?
  1406.  
  1407. keith: then no need for a separate dll
  1408.  
  1409. navy: old app does not know about new dll, just works
  1410.  
  1411. ftp: wants to keep only one dll name because that is the
  1412. most sensible mechanism; doesn't require a loadlibrary.
  1413. don't complicate dev process.
  1414.  
  1415. keith:  need to mandate winsock.dll.  shim or dll is at
  1416. issue.
  1417.  
  1418. ftp: still doesn't want to do the load.
  1419.  
  1420. navy: shimming the other way solves this problem.
  1421.  
  1422. henry: wsastartup solves this problem, handles multiple
  1423. versions.
  1424.  
  1425. dirk: as long as ws2 is a pure superset
  1426.  
  1427. ftp: clarificatrions are small, not big impact
  1428.  
  1429. henry: clarifications to fd_close are fine
  1430.  
  1431. davea: is it ok to have "winsock.dll" that supports both ws2
  1432. and ws1.1?
  1433.  
  1434. many: that should work
  1435.  
  1436. henry: we will have to be careful about this
  1437.  
  1438. wrq: version negotiation must be task specific, need to
  1439. specify this
  1440.  
  1441. davea: if 2.0 dll just handles 2.0 or 1.1, is that ok?
  1442.  
  1443. mark: clarifies
  1444.  
  1445. henry: fine as long as no smeantic changes
  1446.  
  1447. davea: app shouldn't care
  1448.  
  1449. netmanage: in ws2 scheme, is there a default provider?
  1450.  
  1451. davea: af_inet, stream/dgram, first one defined is the
  1452. default
  1453.  
  1454. netmanage: user should be able to choose
  1455.  
  1456. davea: rearrangement of order is an interesting question
  1457.  
  1458. davea: close to resolve an issue:
  1459.  
  1460. mark: there will be one winsock.dll that handles 2.0 and 1.1
  1461. semantics
  1462.  
  1463. novell: how do you distinguish between 16bit and 32bit with
  1464. ws1.1 and ws2.0
  1465.  
  1466. many: not an issue
  1467.  
  1468. distinct: issue with blocking between 1.1 and 2.0?
  1469.  
  1470. keith: should be no difference in blocking at the api level
  1471.  
  1472. davea: 16bit is pseudoblocking, 32bit is real blocking
  1473.  
  1474. henry: in 32bit there is true blocking
  1475.  
  1476. mark: shouldn't be semantic differences
  1477.  
  1478. distinct: revisit wsaasyncselect has semantic changes with
  1479. shared sockets
  1480.  
  1481. davea: that could happen.
  1482.  
  1483. many: provide a new api if that happens.
  1484.  
  1485. davea: depends on the model we choose and may introduce a
  1486. new semantic for wsaasyncselec.  for 1.1 you cannot change
  1487. the behavior.
  1488.  
  1489. davea: no semantic differenecs that effect 1.1 applications.
  1490.  
  1491. netmanage: if socket is shared, blocking, is there a
  1492. different blocking hook? on a per process basis?
  1493.  
  1494. mark: blocking hook is per thread.
  1495.  
  1496. davea: scatter/gather description.  anyone feel strongly?
  1497.  
  1498. wrq: yes!
  1499.  
  1500. mark: why?
  1501.  
  1502. wrq: performance, netbios consistency
  1503.  
  1504. ftp: any dll that implements rpc ftp or attaches some header
  1505. will need this
  1506.  
  1507. novell: novell always supplies this, so it is goodness
  1508.  
  1509. ftp: only prob for svc provider is whether transport
  1510. supports it.  but you can always do a buffer allocation and
  1511. buffer copy.  if provider does not do it, ws2 dll should do
  1512. it.
  1513.  
  1514. many:  issues with who owns the buffer
  1515.  
  1516. ?: allow for it on a provider optional basis
  1517.  
  1518. many: groan
  1519.  
  1520. henry: vendors with a problem implementing it?
  1521.  
  1522. nobody says yes
  1523.  
  1524. henry: being nice, maybe we should do it.
  1525.  
  1526.  
  1527. davea: general sense is that it should be in there.  move on
  1528. to WSASocket taking a protocol_info struct.
  1529.  
  1530. many: sounds like a good idea
  1531.  
  1532. wrq: who provides protocol_info struct?
  1533.  
  1534. davea: provider supplies on installation
  1535.  
  1536. wrq: when do you get it?
  1537.  
  1538. davea: enumprotocols
  1539.  
  1540. wrq: app buffer space gets it
  1541.  
  1542. now on to the independent notification
  1543.  
  1544. navy: easy to do independent notification
  1545.  
  1546. henry: there is a way to do independent notification via
  1547. eventselect.  maybe we just say that async select does not
  1548. do this.
  1549.  
  1550. davea: reiteration: for each fd_ event, a windows messages
  1551. goes to one and only one window.  if process a registers for
  1552. fd_read and b registers for fd_read, does b get the
  1553. semantics or does b fail?
  1554.  
  1555. wrq: there is no way to determine whether an asyncselect is
  1556. outstanding.
  1557.  
  1558. henry: we are assuming cooperating applications, after all.
  1559.  
  1560. wrq: envision a server that kicks off other threads to do
  1561. things
  1562.  
  1563. henry: threads != processes, need to agree on high level
  1564. concepts before addressing specific issues
  1565.  
  1566. davea: there is a motion that for shared sockets a
  1567. particular network event is independent
  1568.  
  1569. davidtr: 1.1 defines that the latest wsaasyncselect
  1570. overrides previous calls
  1571.  
  1572. davea: process a registers for whatever it wants, process b
  1573. registers for other things, but no overlap.
  1574.  
  1575. navy: how is this different from independent notifications?
  1576.  
  1577. henry: easier to implement, cleaner because morass of
  1578. rearming is avoided, and another mechanism is available to
  1579. app writers have eventselect to solve the same problem
  1580.  
  1581. davea: eventselect does this, as long as your app does not
  1582. want to block
  1583.  
  1584. davidtr: overlapped io can also solve this
  1585.  
  1586. davea: yes
  1587.  
  1588. netmanage: how does this work?
  1589.  
  1590. davidtr: description of overlapped io, events
  1591.  
  1592. davea: but we don't want to share events across tasks
  1593.  
  1594. discussion on how events work in different environments
  1595.  
  1596. navy: not many people will want to do this, but it keeps it
  1597. symmetric for multiple applications.  any read on the socket
  1598.  
  1599. davidtr: these must be cooperating applications
  1600.  
  1601. henry: cost of implementing this outweighs value to some
  1602. limited set of applications
  1603.  
  1604. navy: believes that independent notification is easier to
  1605. implement
  1606.  
  1607. mark: we should be grounded in practicality, do not include
  1608. something unless it is really useful
  1609.  
  1610. davidtr: how many implementors feel that independent
  1611. notification is easier?
  1612.  
  1613. intel says it is easier for them?
  1614.  
  1615. wrq: if message handler fails, what do you do?
  1616.  
  1617. dirk: slap info on queue, wait and try later
  1618.  
  1619. wrq: repost on a per task basis
  1620.  
  1621. dirk: yes
  1622.  
  1623. mark: is this really required?
  1624.  
  1625. davea: fd_close, fd_qos could be of interest to multiple
  1626. tasks
  1627.  
  1628. henry: speculates that you will have a master process that
  1629. can receive notifications
  1630.  
  1631. davea: apps can always do it either way, but what is
  1632. easiest/most common usage model?
  1633.  
  1634. mark: agree on fd_close, but not on fd_read
  1635.  
  1636. davea: consistency?
  1637.  
  1638. mark: fd_read must be totally out
  1639.  
  1640. wrq: how would you implement app so that it does not get
  1641. reads in both applications
  1642.  
  1643. davea: making it possible for read and write to multiple
  1644. processes does not make any sense.  do it one way or the
  1645. other.
  1646.  
  1647. navy:  can peek at data, multiple tasks may care about
  1648. fd_read
  1649.  
  1650. digital: idea that multiple selects that come down is not a
  1651. novell concept
  1652.  
  1653. henry: system hides multiple handles
  1654.  
  1655. davidtr: description on how it works on win32
  1656.  
  1657. walldata: will not use this mechanism anyway, will use ipc
  1658. mechanism to communicate.  this feature is too contentious
  1659. to be consistent.
  1660.  
  1661. many:  believe that shared sockets will still be used.
  1662.  
  1663. netmanage: implemented in ws2 dll
  1664.  
  1665. many: incorrect
  1666.  
  1667. davea: we will not bottom out on this, so we should
  1668. carefully word this and take it to the mailing lists
  1669.  
  1670. ibm: thanks intel and davea
  1671.  
  1672. mark: describes different possible data structures for
  1673. providers for async select: for each event, one hwnd/socket
  1674. per event, multiple hwnds/sockets per event; one hwnd/socket
  1675. for all events.
  1676.